home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / games / 521 / dr_necro / dr_necro.gfa (.txt) < prev    next >
GFA-BASIC Atari  |  1991-11-30  |  18KB  |  797 lines

  1. ' Lets Try This Again!
  2. '
  3. ' Dr. Necro
  4. ' By Ken Schafer
  5. '
  6. ' Revision History
  7. ' ----------------
  8. '
  9. ' Ver 0.58 -- 11/20/91
  10. ' --------------------
  11. '  Fixed small bug that occasionally preventing game from ending
  12. '     when it should (Stooooooopid mistake!)   (thanx Mom!)
  13. '
  14. ' Ver 0.57 -- 7/31/91
  15. ' -------------------
  16. '  Joystick routines added(0.57)
  17. '  Sadistic music added as an experiment(0.56)
  18. '
  19. ' Ver 0.55 -- 6/23/91
  20. ' -------------------
  21. '  Levels now function. Game is playable as is
  22. '  Needs Title Screen, sound, animation and cleanup
  23. '
  24. ' Ver 0.52 -- 6/21/91
  25. ' -------------------
  26. '  Added routines to implement virus display and scoring
  27. '
  28. ' Ver 0.50 -- 6/21/91
  29. ' -------------------
  30. '  Lots of Changes -- Pills now have proper shape (tops, sides etc)
  31. '  Added all changes to checking routines to implement various shapes
  32. '  Pills that are linked now have bonds and hold each other up!
  33. '
  34. ' Ver 0.40 -- 6/19/91
  35. ' -------------------
  36. '  Replaced boxes with actual bitmaps
  37. '  Added Background Picture --------- Things are getting REAL cool!
  38. '
  39. ' Ver 0.31 -- 5/26/91
  40. ' -------------------
  41. '  Added routines to allow individual pill pieces to fall
  42. '
  43. ' Ver 0.30 -- 4/20/91
  44. ' -------------------
  45. '  Added boxes instead of debug numbers
  46. '  Began Coding routines to check/erase lines
  47. '
  48. ' Ver 0.21 -- 4/18/91
  49. ' -------------------
  50. '  First version as Dr. Necro
  51. '  Replaced screen point checking with an array lookup -- much faster
  52. '
  53. ' Ver 0.14 -- 1/20/91
  54. ' -------------------
  55. '  Originally the beginnings of a Tetris clone...
  56. '  The main logic for Dr. Necro was "extracted" from here.
  57. '
  58. '
  59. ' Constants
  60. '
  61. v1_0$="0.58"
  62. v1_1$="11/20/91"
  63. '
  64. v0_0#=4
  65. v0_1#=6
  66. v0_2#=7
  67. v0_3#=0
  68. v0_4#=1
  69. v0_5#=2
  70. v0_6#=3
  71. v0_7#=5
  72. v0_8#=8
  73. v0_9#=9
  74. v0_A#=10
  75. v0_B#=11
  76. v0_C#=12
  77. v0_D#=0
  78. v0_E#=128
  79. v0_F#=1
  80. v0_10#=0
  81. v0_11#=5
  82. v0_12#=1
  83. v0_13#=0
  84. v0_14#=1
  85. v0_15#=0
  86. v0_16#=16
  87. v0_17#=4
  88. v0_4C#=32
  89. ' Bottle descriptor Dec,Bit, Meaning
  90. ' (  1)  0  Color 0=Empty   2=Blue     A color with no piece desc bit set
  91. ' (  2)  1  Info  1=Yellow  3=Red      (bits 2-5) indicate a single piece
  92. ' (  4)  2  Right Half
  93. ' (  8)  3  Left Half
  94. ' ( 16)  4  Bottom Half
  95. ' ( 32)  5  Top Half
  96. ' ( 64)  6  Virus
  97. ' (128)  7  Wall piece
  98. '
  99. ' Init
  100. '
  101. DIM v4_0#(15)
  102. DIM v4_1#(15)
  103. DIM v4_2#(15,25)
  104. DIM v4_3#(20,4)
  105. DIM v5_0$(32008)
  106. DIM v5_1$(30)
  107. '
  108. ARRAYFILL v4_3#(),0
  109. '
  110. FOR v0_18#=0 TO 15
  111.   READ v4_1#(v0_18#)
  112.   READ v4_0#(v0_18#)
  113. NEXT v0_18#
  114. '
  115. DATA 0,1911,48,1847,855,1792,7,6,1904,7,1536,119,1056,1904
  116. DATA 1910,1799,851,1365,1908,819,1044,1843,1360,883
  117. DATA 1799,823,1904,887,1288,1907,1911,0
  118. '
  119. @vB_0
  120. @vB_1
  121. v0_19#=FALSE
  122. @vB_17
  123. STICK 1
  124. WHILE NOT v0_19# AND v0_14#<5
  125.   IF v0_1A#=0
  126.     WAVE 0
  127.     EVERY STOP
  128.     v0_1B#=0
  129.     INC v0_14#
  130.     @vB_2
  131.     PUT 0,0,v1_2$,3
  132.     @vB_3
  133.     @vB_1
  134.     EVERY 35 GOSUB vB_18
  135.   ENDIF
  136.   @vB_4
  137.   v0_1C#=FALSE
  138.   WHILE NOT v0_1C#
  139.     v0_1D#=TIMER+105-(v0_14#*5)-INT(v0_1B#/50)
  140.     INC v0_1B#
  141.     PRINT AT(1,5);105-(v0_14#*5)-INT(v0_1B#/50);" ";
  142.     WHILE TIMER<v0_1D#
  143.       '     IF stick=FALSE
  144.       v1_3$=RIGHT$(INKEY$,1)
  145.       SELECT v1_3$
  146.       CASE "H"
  147.         @vB_5
  148.       CASE "K"
  149.         @vB_6
  150.       CASE "M"
  151.         @vB_7
  152.       CASE "P"
  153.         v0_1D#=TIMER
  154.       ENDSELECT
  155.       '  ELSE
  156.       v0_48#=STICK(1)
  157.       IF v0_48#<>v0_49#
  158.         SELECT v0_48#
  159.         CASE 4
  160.           @vB_6
  161.         CASE 8
  162.           @vB_7
  163.         CASE 2
  164.           v0_1D#=TIMER
  165.         ENDSELECT
  166.         v0_49#=v0_48#
  167.       ENDIF
  168.       v0_4A#=STRIG(1)
  169.       IF v0_4A#<>v0_4B#
  170.         IF STRIG(1)
  171.           @vB_5
  172.         ENDIF
  173.         v0_4B#=v0_4A#
  174.       ENDIF
  175.       ' ENDIF
  176.     WEND
  177.     @vB_8
  178.     IF NOT v0_1C#
  179.       @vB_9(v0_1F#,v0_20#,v0_21#)
  180.       INC v0_20#
  181.       @vB_A(v0_1F#,v0_20#,v0_22#,v0_23#,v0_21#)
  182.     ELSE
  183.       v0_24#=1
  184.       v0_25#=0
  185.       WHILE v0_24#>0
  186.         v0_24#=0
  187.         @vB_B
  188.         IF v0_26#>0 THEN
  189.           @vB_C
  190.           v0_25#=1
  191.         ENDIF
  192.         IF v0_25#=1
  193.           @vB_D
  194.         ENDIF
  195.       WEND
  196.       '
  197.     ENDIF
  198.   WEND
  199. WEND
  200. CLS
  201. PRINT AT(5,10);"Game_Over"
  202. PRINT
  203. PRINT
  204. PRINT "Addictive little game, isn't it?"
  205. PRINT
  206. PRINT "Look for future updates,and the complete"
  207. PRINT "ShareWare release soon!"
  208. PRINT
  209. PRINT "press a key to exit"
  210. v0_3E#=INP(2)
  211. @vB_14
  212. '
  213. > PROCEDURE vB_3
  214.   ARRAYFILL v4_2#(),v0_D#
  215.   FOR v0_27#=3 TO 20
  216.     v4_2#(0,v0_27#)=v0_E#
  217.     v4_2#(9,v0_27#)=v0_E#
  218.   NEXT v0_27#
  219.   FOR v0_27#=1 TO 9
  220.     v4_2#(v0_27#,20)=v0_E#
  221.   NEXT v0_27#
  222.   FOR v0_27#=0 TO 3
  223.     v4_2#(3,v0_27#)=v0_E#
  224.     v4_2#(6,v0_27#)=v0_E#
  225.     v4_2#(v0_27#,3)=v0_E#
  226.     v4_2#(v0_27#+6,3)=v0_E#
  227.   NEXT v0_27#
  228. RETURN
  229. '
  230. > PROCEDURE vB_4
  231.   v0_1F#=4
  232.   v0_20#=0
  233.   v0_22#=INT(RND*3)+1
  234.   v0_23#=INT(RND*3)+1
  235.   v0_21#=v0_12#
  236. RETURN
  237. '
  238. > PROCEDURE vB_5
  239.   IF v0_20#<1
  240.     GOTO vA_0
  241.   ENDIF
  242.   IF v0_21#=v0_13#
  243.     @vB_E(v0_1F#+1,v0_20#)
  244.     v0_28#=v0_29#
  245.   ELSE
  246.     @vB_E(v0_1F#,v0_20#-1)
  247.     v0_28#=v0_29#
  248.   ENDIF
  249.   IF v0_28#=FALSE
  250.     GOTO vA_0
  251.   ENDIF
  252.   IF v0_21#=v0_13#
  253.     SWAP v0_22#,v0_23#
  254.   ENDIF
  255.   @vB_9(v0_1F#,v0_20#,v0_21#)
  256.   v0_21#=1-v0_21#
  257.   @vB_A(v0_1F#,v0_20#,v0_22#,v0_23#,v0_21#)
  258. vA_0:
  259. RETURN
  260. '
  261. > PROCEDURE vB_6
  262.   IF v0_21#=v0_13#
  263.     @vB_E(v0_1F#-1,v0_20#)
  264.     v0_2A#=v0_29#
  265.     @vB_E(v0_1F#-1,v0_20#-1)
  266.     IF v0_29#=v0_2B#
  267.       v0_2A#=v0_2B#
  268.     ENDIF
  269.   ELSE
  270.     @vB_E(v0_1F#-1,v0_20#)
  271.     v0_2A#=v0_29#
  272.   ENDIF
  273.   IF v0_2A#=FALSE
  274.     GOTO vA_1
  275.   ENDIF
  276.   @vB_9(v0_1F#,v0_20#,v0_21#)
  277.   DEC v0_1F#
  278.   @vB_A(v0_1F#,v0_20#,v0_22#,v0_23#,v0_21#)
  279. vA_1:
  280. RETURN
  281. '
  282. > PROCEDURE vB_7
  283.   IF v0_21#=v0_13#
  284.     @vB_E(v0_1F#+1,v0_20#)
  285.     v0_2A#=v0_29#
  286.     @vB_E(v0_1F#+1,v0_20#-1)
  287.     IF v0_29#=FALSE
  288.       v0_2A#=FALSE
  289.     ENDIF
  290.   ELSE
  291.     @vB_E(v0_1F#+2,v0_20#)
  292.     v0_2A#=v0_29#
  293.   ENDIF
  294.   IF v0_2A#=FALSE
  295.     GOTO vA_2
  296.   ENDIF
  297.   @vB_9(v0_1F#,v0_20#,v0_21#)
  298.   INC v0_1F#
  299.   @vB_A(v0_1F#,v0_20#,v0_22#,v0_23#,v0_21#)
  300. vA_2:
  301. RETURN
  302. '
  303. > PROCEDURE vB_8
  304.   IF v0_21#=v0_13#
  305.     @vB_E(v0_1F#,v0_20#+1)
  306.     v0_1C#=NOT v0_29#
  307.   ELSE
  308.     @vB_E(v0_1F#,v0_20#+1)
  309.     v0_1C#=NOT v0_29#
  310.     @vB_E(v0_1F#+1,v0_20#+1)
  311.     IF v0_29#=FALSE
  312.       v0_1C#=TRUE
  313.     ENDIF
  314.   ENDIF
  315.   LOCATE 10,1
  316.   IF v0_1C#=TRUE
  317.     IF v0_21#=v0_12#
  318.       v4_2#(v0_1F#,v0_20#)=v0_22# OR 8
  319.       v4_2#(v0_1F#+1,v0_20#)=v0_23# OR 4
  320.     ELSE
  321.       v4_2#(v0_1F#,v0_20#)=v0_22# OR 16
  322.       v4_2#(v0_1F#,v0_20#-1)=v0_23# OR 32
  323.     ENDIF
  324.   ENDIF
  325.   IF v0_1C#=TRUE AND v0_20#<=2
  326.     v0_19#=TRUE
  327.   ENDIF
  328. RETURN
  329. '
  330. > PROCEDURE vB_9(v0_1F#,v0_20#,v0_21#)
  331.   IF v0_21#=v0_13#
  332.     PRINT AT(v0_1F#+v0_16#,v0_20#+v0_17#);" ";
  333.     PRINT AT(v0_1F#+v0_16#,v0_20#+v0_17#-1);" ";
  334.   ELSE
  335.     PRINT AT(v0_1F#+v0_16#,v0_20#+v0_17#);" ";
  336.     PRINT AT(v0_1F#+1+v0_16#,v0_20#+v0_17#);" ";
  337.   ENDIF
  338. RETURN
  339. '
  340. > PROCEDURE vB_A(v0_2C#,v0_2D#,v0_22#,v0_23#,v0_21#)
  341.   ADD v0_2C#,v0_16#
  342.   ADD v0_2D#,v0_17#
  343.   DEC v0_2C#
  344.   DEC v0_2D#
  345.   MUL v0_2C#,8
  346.   MUL v0_2D#,8
  347.   IF v0_21#=v0_13#
  348.     PUT v0_2C#,v0_2D#,v5_1$((v0_22#-1)*7+4)
  349.     PUT v0_2C#,v0_2D#-8,v5_1$((v0_23#-1)*7+3)
  350.   ELSE
  351.     PUT v0_2C#,v0_2D#,v5_1$((v0_22#-1)*7+1)
  352.     PUT v0_2C#+8,v0_2D#,v5_1$((v0_23#-1)*7+2)
  353.   ENDIF
  354. RETURN
  355. '
  356. > PROCEDURE vB_E(v0_2E#,v0_2F#)
  357.   v0_29#=TRUE
  358.   IF v4_2#(v0_2E#,v0_2F#)<>v0_D#
  359.     v0_29#=FALSE
  360.   ENDIF
  361. RETURN
  362. '
  363. > PROCEDURE vB_B
  364.   v0_26#=0
  365.   FOR v0_18#=1 TO 8
  366.     FOR v0_27#=19 DOWNTO 4
  367.       v0_30#=v0_27#
  368.       v0_31#=(v4_2#(v0_18#,v0_27#) AND 3)
  369.       IF v0_31#<>v0_D#
  370.         WHILE (v4_2#(v0_18#,v0_27#-1) AND 3)=v0_31#
  371.           DEC v0_27#
  372.         WEND
  373.         IF v0_30#-v0_27#>=3
  374.           INC v0_26#
  375.           v4_3#(v0_26#,1)=v0_13#
  376.           v4_3#(v0_26#,2)=v0_27#
  377.           v4_3#(v0_26#,3)=v0_30#
  378.           v4_3#(v0_26#,4)=v0_18#
  379.         ENDIF
  380.       ENDIF
  381.     NEXT v0_27#
  382.   NEXT v0_18#
  383.   '
  384.   FOR v0_27#=19 DOWNTO 4
  385.     FOR v0_18#=8 DOWNTO 4
  386.       v0_30#=v0_18#
  387.       v0_31#=(v4_2#(v0_18#,v0_27#) AND 3)
  388.       IF v0_31#<>v0_D#
  389.         WHILE (v4_2#(v0_18#-1,v0_27#) AND 3)=v0_31#
  390.           DEC v0_18#
  391.         WEND
  392.         IF v0_30#-v0_18#>=3
  393.           INC v0_26#
  394.           v4_3#(v0_26#,1)=v0_12#
  395.           v4_3#(v0_26#,2)=v0_18#
  396.           v4_3#(v0_26#,3)=v0_30#
  397.           v4_3#(v0_26#,4)=v0_27#
  398.         ENDIF
  399.       ENDIF
  400.     NEXT v0_18#
  401.   NEXT v0_27#
  402. RETURN
  403. '
  404. > PROCEDURE vB_C
  405.   '
  406.   v0_32#=0
  407.   FOR v0_33#=1 TO v0_26#
  408.     IF v4_3#(v0_33#,1)=v0_12#
  409.       v0_27#=v4_3#(v0_33#,4)
  410.       v0_34#=v4_3#(v0_33#,2)
  411.       v0_35#=v4_3#(v0_33#,3)
  412.       IF v4_2#(v0_35#,v0_27#) AND 8
  413.         v4_2#(v0_35#+1,v0_27#)=v4_2#(v0_35#+1,v0_27#) AND 3
  414.         @vB_F(v0_35#+1,v0_27#,v4_2#(v0_35#+1,v0_27#))
  415.       ENDIF
  416.       IF v4_2#(v0_34#,v0_27#) AND 4
  417.         v4_2#(v0_34#-1,v0_27#)=v4_2#(v0_34#-1,v0_27#) AND 3
  418.         @vB_F(v0_34#-1,v0_27#,v4_2#(v0_34#-1,v0_27#))
  419.       ENDIF
  420.       FOR v0_18#=v0_34# TO v0_35#
  421.         IF v4_2#(v0_18#,v0_27#) AND 32
  422.           v4_2#(v0_18#,v0_27#+1)=v4_2#(v0_18#,v0_27#+1) AND 3
  423.           @vB_F(v0_18#,v0_27#+1,v4_2#(v0_18#,v0_27#+1))
  424.         ENDIF
  425.         IF v4_2#(v0_18#,v0_27#) AND 16
  426.           v4_2#(v0_18#,v0_27#-1)=v4_2#(v0_18#,v0_27#-1) AND 3
  427.           @vB_F(v0_18#,v0_27#-1,v4_2#(v0_18#,v0_27#-1))
  428.         ENDIF
  429.         IF v4_2#(v0_18#,v0_27#) AND 64
  430.           @vB_10
  431.           DEC v0_1A#
  432.           INC v0_32#
  433.           ADD v0_15#,100
  434.         ENDIF
  435.         @vB_11(v0_18#,v0_27#,v4_2#(v0_18#,v0_27#) AND 3)
  436.         v4_2#(v0_18#,v0_27#)=(v4_2#(v0_18#,v0_27#) OR 128) AND 131
  437.       NEXT v0_18#
  438.     ENDIF
  439.     '
  440.     IF v4_3#(v0_33#,1)=v0_13#
  441.       v0_18#=v4_3#(v0_33#,4)
  442.       v0_34#=v4_3#(v0_33#,2)
  443.       v0_35#=v4_3#(v0_33#,3)
  444.       IF v4_2#(v0_18#,v0_35#) AND 32
  445.         v4_2#(v0_18#,v0_35#+1)=v4_2#(v0_18#,v0_35#+1) AND 3
  446.         @vB_F(v0_18#,v0_35#+1,v4_2#(v0_18#,v0_35#+1))
  447.       ENDIF
  448.       IF v4_2#(v0_18#,v0_34#) AND 16
  449.         v4_2#(v0_18#,v0_34#-1)=v4_2#(v0_18#,v0_34#-1) AND 3
  450.         @vB_F(v0_18#,v0_34#-1,v4_2#(v0_18#,v0_34#-1))
  451.       ENDIF
  452.       FOR v0_27#=v0_34# TO v0_35#
  453.         IF v4_2#(v0_18#,v0_27#) AND 8
  454.           v4_2#(v0_18#+1,v0_27#)=v4_2#(v0_18#+1,v0_27#) AND 3
  455.           @vB_F(v0_18#+1,v0_27#,v4_2#(v0_18#+1,v0_27#))
  456.         ENDIF
  457.         IF v4_2#(v0_18#,v0_27#) AND 4
  458.           v4_2#(v0_18#-1,v0_27#)=v4_2#(v0_18#-1,v0_27#) AND 3
  459.           @vB_F(v0_18#-1,v0_27#,v4_2#(v0_18#-1,v0_27#))
  460.         ENDIF
  461.         IF v4_2#(v0_18#,v0_27#) AND 64
  462.           @vB_10
  463.           DEC v0_1A#
  464.           INC v0_32#
  465.           ADD v0_15#,100
  466.         ENDIF
  467.         @vB_11(v0_18#,v0_27#,v4_2#(v0_18#,v0_27#) AND 3)
  468.         v4_2#(v0_18#,v0_27#)=(v4_2#(v0_18#,v0_27#) OR 128) AND 131
  469.       NEXT v0_27#
  470.     ENDIF
  471.   NEXT v0_33#
  472.   IF (v0_32#>1 AND v0_26#>1)
  473.     IF v0_32#>v0_26#
  474.       ADD v0_15#,v0_26#*1000
  475.     ENDIF
  476.     IF v0_32#<v0_26#
  477.       ADD v0_15#,v0_32#*1000
  478.     ENDIF
  479.     IF v0_32#=v0_26#
  480.       ADD v0_15#,v0_32#*1000
  481.     ENDIF
  482.   ENDIF
  483.   @vB_12
  484.   '  Pause 30
  485.   FOR v0_27#=1 TO 20
  486.     FOR v0_18#=1 TO 8
  487.       IF v4_2#(v0_18#,v0_27#)>128
  488.         v4_2#(v0_18#,v0_27#)=v0_D#
  489.         PRINT AT(v0_18#+v0_16#,v0_27#+v0_17#);" ";
  490.       ENDIF
  491.     NEXT v0_18#
  492.   NEXT v0_27#
  493. RETURN
  494. '
  495. > PROCEDURE vB_D
  496.   v0_24#=0
  497.   FOR v0_27#=19 TO 1 STEP -1
  498.     FOR v0_18#=1 TO 8
  499.       IF (v4_2#(v0_18#,v0_27#) AND 3)<>v0_D#
  500.         IF (v4_2#(v0_18#,v0_27#) AND 8)=8
  501.           @vB_E(v0_18#,v0_27#+1)
  502.           v0_36#=v0_29#
  503.           @vB_E(v0_18#+1,v0_27#+1)
  504.           IF (v0_36#=TRUE AND v0_29#=TRUE)
  505.             v4_2#(v0_18#,v0_27#+1)=v4_2#(v0_18#,v0_27#)
  506.             v4_2#(v0_18#+1,v0_27#+1)=v4_2#(v0_18#+1,v0_27#)
  507.             v4_2#(v0_18#,v0_27#)=v0_D#
  508.             v4_2#(v0_18#+1,v0_27#)=v0_D#
  509.             INC v0_24#
  510.             @vB_A(v0_18#,v0_27#+1,v4_2#(v0_18#,v0_27#+1) AND 3,v4_2#(v0_18#+1,v0_27#+1) AND 3,v0_12#)
  511.             @vB_9(v0_18#,v0_27#,v0_12#)
  512.           ENDIF
  513.         ENDIF
  514.         IF (v4_2#(v0_18#,v0_27#) AND 16)=16
  515.           @vB_E(v0_18#,v0_27#+1)
  516.           IF v0_29#=TRUE
  517.             v4_2#(v0_18#,v0_27#+1)=v4_2#(v0_18#,v0_27#)
  518.             v4_2#(v0_18#,v0_27#)=v4_2#(v0_18#,v0_27#-1)
  519.             v4_2#(v0_18#,v0_27#-1)=v0_D#
  520.             INC v0_24#
  521.             @vB_9(v0_18#,v0_27#,v0_13#)
  522.             @vB_A(v0_18#,v0_27#+1,v4_2#(v0_18#,v0_27#+1) AND 3,v4_2#(v0_18#,v0_27#) AND 3,v0_13#)
  523.           ENDIF
  524.         ENDIF
  525.         IF (v4_2#(v0_18#,v0_27#)>0 AND v4_2#(v0_18#,v0_27#)<4)
  526.           @vB_E(v0_18#,v0_27#+1)
  527.           IF v0_29#=TRUE
  528.             @vB_F(v0_18#,v0_27#+1,v4_2#(v0_18#,v0_27#))
  529.             PRINT AT(v0_18#+v0_16#,v0_27#+v0_17#);" ";
  530.             v4_2#(v0_18#,v0_27#+1)=v4_2#(v0_18#,v0_27#)
  531.             v4_2#(v0_18#,v0_27#)=v0_D#
  532.             INC v0_24#
  533.           ENDIF
  534.         ENDIF
  535.       ENDIF
  536.     NEXT v0_18#
  537.   NEXT v0_27#
  538. RETURN
  539. '
  540. > PROCEDURE vB_11(v0_37#,v0_38#,v0_39#)
  541.   ADD v0_37#,v0_16#
  542.   ADD v0_38#,v0_17#
  543.   DEC v0_37#
  544.   DEC v0_38#
  545.   MUL v0_37#,8
  546.   MUL v0_38#,8
  547.   PUT v0_37#,v0_38#,v5_1$((v0_39#-1)*7+5)
  548. RETURN
  549. '
  550. > PROCEDURE vB_F(v0_3A#,v0_3B#,v0_3C#)
  551.   ADD v0_3A#,v0_16#
  552.   ADD v0_3B#,v0_17#
  553.   DEC v0_3A#
  554.   DEC v0_3B#
  555.   MUL v0_3A#,8
  556.   MUL v0_3B#,8
  557.   PUT v0_3A#,v0_3B#,v5_1$((v0_3C#-1)*7)
  558. RETURN
  559. '
  560. > PROCEDURE vB_13
  561.   v1_2$=SPACE$(32000)
  562.   OPEN "I",#1,"stuff.PUT"
  563.   v1_2$=INPUT$(32008,#1)
  564.   CLOSE #1
  565.   PUT 0,0,v1_2$,3
  566.   OPEN "I",#1,"necro.dat"
  567.   FOR v0_18#=0 TO 20
  568.     v5_1$(v0_18#)=INPUT$(72,#1)
  569.   NEXT v0_18#
  570.   CLOSE #1
  571. RETURN
  572. '
  573. > PROCEDURE vB_14
  574.   FOR v0_18#=0 TO 15
  575.     SETCOLOR v0_18#,v4_0#(v0_18#)
  576.   NEXT v0_18#
  577.   SPOKE (&H484),PEEK(&H484) OR 1
  578.   WAVE 0
  579.   STICK 0
  580. RETURN
  581. '
  582. > PROCEDURE vB_15
  583.   FOR v0_18#=v0_3D# TO 15
  584.     SETCOLOR v0_18#,v4_1#(v0_18#)
  585.   NEXT v0_18#
  586.   ' kill keyclick
  587.   SPOKE (&H484),PEEK(&H484) AND 254
  588. RETURN
  589. '
  590. > PROCEDURE vB_0
  591.   @vB_15
  592.   CLS
  593.   DEFTEXT 6,1,0,32
  594.   TEXT 0,22,"Dr. Necro"
  595.   DEFTEXT 4,0,0,13
  596.   TEXT 0,40,"Beta Test Release -- Demo version"
  597.   DEFTEXT 3,0,0,13
  598.   TEXT 0,60,"(c)1991 NecroWare Productions"
  599.   DEFTEXT 7,0,0,13
  600.   TEXT 0,75,"Beta "+v1_0$+"  "+v1_1$+"   By: Ken Schafer"
  601.   DEFTEXT 8,0,0,13
  602.   TEXT 0,90,"press a key"
  603.   DEFTEXT 9,0,0,13
  604.   TEXT 0,110,"Send comments, suggestions, source code"
  605.   TEXT 0,125,"to replay digi sounds, etc. to:"
  606.   TEXT 0,145,"NecroWare Development"
  607.   TEXT 0,160,"Box 688"
  608.   TEXT 0,175,"Clark Mills, New York, 13321-0688"
  609.   TEXT 0,190,"GEnie - K.Schafer4,  Delphi - kschafer"
  610.   v0_3E#=INP(2)
  611.   CLS
  612.   @vB_13
  613.   @vB_3
  614. RETURN
  615. '
  616. > PROCEDURE vB_12
  617.   COLOR v0_8#
  618.   DEFFILL v0_8#
  619.   GRAPHMODE 2
  620.   DEFTEXT 0,0,0,6
  621.   v1_4$=LEFT$("0000000",7-LEN(STR$(v0_15#)))+STR$(v0_15#)
  622.   PBOX 48,56,102,64
  623.   TEXT 48,62,v1_4$
  624.   COLOR v0_6#
  625.   DEFFILL v0_6#
  626.   DEFTEXT 0,0,0,6
  627.   v1_5$=LEFT$("00",2-LEN(STR$(v0_1A#)))+STR$(v0_1A#)
  628.   PBOX 248,176,263,184
  629.   TEXT 248,182,v1_5$
  630.   v1_6$=LEFT$("00",2-LEN(STR$(v0_14#)))+STR$(v0_14#)
  631.   PBOX 248,128,263,136
  632.   TEXT 248,134,v1_6$
  633.   GRAPHMODE 1
  634. RETURN
  635. '
  636. > PROCEDURE vB_2
  637.   ADD v0_15#,v0_14#*1000
  638.   @vB_12
  639.   COLOR v0_8#
  640.   DEFFILL v0_B#
  641.   GRAPHMODE 2
  642.   DEFTEXT 12,0,0,6
  643.   DEFLINE 0,4,0,0
  644.   PRBOX 120,64,200,127
  645.   RBOX 120,64,200,127
  646.   TEXT 128,78,"GOOD JOB"
  647.   TEXT 128,86,"--------"
  648.   TEXT 132,94,"Prepare"
  649.   TEXT 148,102,"For"
  650.   TEXT 144,110,"Next"
  651.   TEXT 140,118,"Level"
  652.   PAUSE 120
  653.   GRAPHMODE 1
  654. RETURN
  655. '
  656. > PROCEDURE vB_1
  657.   DEFTEXT 8,0,0,13
  658.   PUT 0,0,v5_0$(3)
  659.   PRINT AT(1,1);"Ver";
  660.   PRINT AT(1,2);v1_0$;
  661.   PRINT AT(1,4);"Dif";
  662.   PRINT AT(1,7);"Note";
  663.   v0_1A#=v0_14#*4+4
  664.   v0_3F#=10
  665.   IF v0_14#>10
  666.     ADD v0_3F#,INT((v0_14#-10)/2)
  667.   ENDIF
  668.   v0_40#=0
  669.   FOR v0_18#=1 TO v0_1A#
  670.     v0_41#=20-INT(RND*v0_3F#)
  671.     v0_42#=INT(RND*8)+1
  672.     WHILE v4_2#(v0_42#,v0_41#)<>v0_D#
  673.       v0_41#=20-INT(RND*v0_3F#)
  674.       v0_42#=INT(RND*8)+1
  675.     WEND
  676.     INC v0_40#
  677.     IF v0_40#=4
  678.       v0_40#=1
  679.     ENDIF
  680.     v4_2#(v0_42#,v0_41#)=64+v0_40#
  681.     ADD v0_42#,v0_16#
  682.     ADD v0_41#,v0_17#
  683.     DEC v0_42#
  684.     DEC v0_41#
  685.     MUL v0_42#,8
  686.     MUL v0_41#,8
  687.     PUT v0_42#,v0_41#,v5_1$((v0_40#-1)*7+6)
  688.   NEXT v0_18#
  689.   @vB_12
  690.   IF v0_14#>4
  691.     v0_19#=FALSE
  692.   ENDIF
  693. RETURN
  694. '
  695. > PROCEDURE vB_10
  696.   FOR v0_43#=5 DOWNTO 2
  697.     SOUND 1,15,v0_43#,5,1
  698.   NEXT v0_43#
  699.   FOR v0_43#=2 TO 5
  700.     SOUND 1,15,v0_43#,5,1
  701.   NEXT v0_43#
  702.   SOUND 1,0,0,0,0
  703.   WAVE 37
  704. RETURN
  705. '
  706. > PROCEDURE vB_17
  707.   RESTORE vA_4
  708.   READ v0_4C#
  709.   DIM v4_4#(3,v0_4C#),v4_5#(3,v0_4C#)
  710.   FOR v0_44#=1 TO 3
  711.     FOR v0_18#=1 TO v0_4C#
  712.       READ v4_4#(v0_44#,v0_18#)
  713.       READ v4_5#(v0_44#,v0_18#)
  714.     NEXT v0_18#
  715.   NEXT v0_44#
  716.   '
  717.   v0_45#=0
  718.   WAVE 39,7,8
  719.   EVERY 35 GOSUB vB_18
  720. RETURN
  721. '
  722. > PROCEDURE vB_18
  723.   '
  724.   INC v0_45#
  725.   PRINT AT(1,8);v0_45#;"  ";
  726.   IF v0_45#=v0_4C#
  727.     v0_45#=0
  728.   ENDIF
  729.   FOR v0_44#=1 TO 3
  730.     SOUND v0_44#,0,0,0
  731.     WAVE 35
  732.     IF v4_4#(v0_44#,v0_45#)<>0
  733.       SOUND v0_44#,13,v4_4#(v0_44#,v0_45#),v4_5#(v0_44#,v0_45#)
  734.       IF (v0_45#>=193 AND v0_45#<=222)
  735.         WAVE 7,7
  736.       ELSE
  737.         WAVE 35,35,9,5000
  738.       ENDIF
  739.     ENDIF
  740.   NEXT v0_44#
  741. RETURN
  742. '
  743. vA_4:
  744. DATA 284
  745. vA_3:
  746. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  747. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  748. DATA 11,1,11,1,3,2,3,2,6,2,6,2,8,2,8,2,9,2,9,2,8,2,8,2,6,2,6,2,3,2,3,2
  749. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  750. DATA 1,2,1,2,5,2,5,2,8,2,8,2,10,2,10,2,11,1,11,1,1,2,1,2,3,2,3,2,8,2,8,2
  751. DATA 6,1,6,1,10,1,10,1,11,1,11,1,12,1,12,1,1,2,1,3,1,3,1,3,1,3,1,2,4,2,4,2
  752. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  753. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  754. DATA 11,1,11,1,3,2,3,2,6,2,6,2,8,2,8,2,9,2,9,2,8,2,8,2,6,2,6,2,3,2,3,2
  755. DATA 6,1,6,1,10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,2,3,2,1,2,1,2,10,1,10,1
  756. DATA 1,2,1,2,5,2,5,2,8,2,8,2,10,2,10,2,11,1,11,1,3,2,3,2,6,2,6,2,8,2,8,2
  757. DATA 6,1,6,1,10,1,10,1,11,1,11,1,12,1,12,1,1,2,1,3,1,3,1,3,1,3,1,2,4,2,4,2
  758. DATA 6,1,0,0,0,0,0,0,0,0,0,0,0,0,6,1,5,3,6,3,1,3,11,2,10,2,0,0,6,1,5,3
  759. DATA 6,3,1,3,3,3,1,3,6,3,10,3,6,4,6,4,4,4,4,4,3,4,3,4,1,4,1,4,11,1,11,1
  760. DATA 3,2,3,2,6,2,6,2,8,2,8,2,9,2,9,2,8,2,8,2,6,2,6,2,3,2,3,2,6,1,6,1
  761. DATA 10,1,10,1,1,2,1,2,3,2,3,2,6,2,6,2,3,1,3,1,1,2,1,2,10,1,10,1,1,2,1,2
  762. DATA 5,2,5,2,8,2,8,2,10,2,10,2,11,1,11,1,3,2,3,2,6,2,6,2,8,2,8,2,6,1,6,1
  763. DATA 10,1,10,1,11,1,11,1,12,1,12,1,1,2,11,1,8,1,6,1,6,1,0,0
  764. '
  765. DATA 0,0,6,4,6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,10,4,0,0,6,4,3,4,1,4
  766. DATA 0,0,6,4,6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,10,4,0,0,6,4,3,4,1,4
  767. DATA 0,0,6,4,6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,9,4,0,0,6,4,3,4,1,4
  768. DATA 0,0,6,4,6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,10,4,0,0,6,4,3,4,1,4
  769. DATA 0,0,1,5,12,4,0,0,9,4,6,4,3,4,1,4,1,5,11,4,0,0,9,4,0,0,0,0,0,0,0,0
  770. DATA 0,0,6,4,4,4,4,4,3,4,3,4,2,4,2,4,0,0,1,5,1,5,1,5,1,5,0,0,0,0,0,0
  771. DATA 9,4,10,4,1,5,0,0,6,5,6,5,0,0,0,0,9,4,11,4,1,5,6,5,0,0,0,0,0,0,0,0
  772. DATA 0,0,1,5,11,4,0,0,10,4,6,4,3,4,1,4,6,4,6,4,0,0,10,4,0,0,0,0,0,0,0,0
  773. DATA 8,4,9,4,1,5,0,0,6,5,6,5,0,0,0,0,8,4,9,4,1,5,6,5,0,0,0,0,0,0,0,0
  774. DATA 0,0,1,5,11,4,0,0,10,4,6,4,3,4,1,4,6,4,6,4,0,0,10,4,0,0,0,0,0,0,10,3
  775. DATA 0,0,1,5,11,4,0,0,9,4,6,4,3,4,1,4,1,5,11,4,0,0,9,4,0,0,0,0,0,0,0,0
  776. DATA 0,0,6,3,4,3,4,3,3,3,3,3,2,3,2,3,0,0,1,5,1,5,1,5,1,5,0,0,0,0,0,0
  777. DATA 0,0,5,3,6,3,1,3,3,3,1,3,0,0,0,0,9,3,10,3,6,3,3,3,1,3,0,0,0,0,12,3
  778. DATA 1,4,10,3,11,3,10,3,1,4,6,4,1,5,1,5,11,4,11,4,10,4,10,4,8,4,8,4,0,0,6,4
  779. DATA 6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,9,4,0,0,6,4,3,4,1,4,0,0,6,4
  780. DATA 6,4,0,0,6,4,0,0,0,0,0,0,6,4,6,4,0,0,10,4,0,0,6,4,3,4,1,4,0,0,0,0
  781. DATA 0,0,0,0,9,4,6,4,3,4,1,4,1,5,11,4,0,0,9,4,0,0,0,0,0,0,0,0,0,0,6,4
  782. DATA 4,4,4,4,3,4,3,4,2,4,2,4,1,5,3,5,5,5,6,5,10,3,0,0
  783. '
  784. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  785. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,5,2,1,2,1,2
  786. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  787. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,5,2,1,2,1,2
  788. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  789. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,6,3,6,3,6,3
  790. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  791. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,6,3
  792. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  793. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  794. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0
  795. DATA 0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,0,0,6,3,0,0,0,0,6,3,6,3,6,3
  796. DATA 0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,0,9,3
  797. DATA 10,3,6,3,8,3,6